#include <stdio.h>
#define GENERIC_MAX(type)         \
type type##_max(type x, type y)   \
{                                 \
    return x > y ? x : y;         \
}
/*
扩展到:
float float_max(float x, float y) { return x > y ? x : y; }
*/
GENERIC_MAX(long)

#define unsigned_long unsigned long
GENERIC_MAX(unsigned_long)
/*
扩展到:
unsigned long unsigned_long_max(unsigned long x, unsigned long y) { return x > y ? x : y; }
*/
int main(void)
{
    printf("%ld\n", long_max(1234567890, 9876543210));
    printf("%ld\n", unsigned_long_max(1234567890, 9876543210));
    return 0;
}
